#ifndef CA_H
#define CA_H

#include <memory>

class IGrid;

using namespace std;

class CA
{
public:

    unsigned step;
    shared_ptr<IGrid> current_states;
    shared_ptr<IGrid> new_states;

    CA():step(0){}
    virtual bool next()=0;
    virtual void start(int steps)=0;
    virtual void start()=0;
    virtual int getStep()const=0;
};





#endif // CA_H


